/*Samantha Catún        Carnet: 12382
 * Descripcion: Clase implementada por mi persona para poder intercambiarse con
 * la interfaz del grupo
 */
package p_radio;

import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.border.TitledBorder;

public class Radio 
{
    //Atributos para el radio
    protected boolean estado;
    protected Boton[] botones;
    protected double estaciones;
    protected String frecuencia;
    
    /*Constructor en el cual se inicializan los valores del radio al momento
     * de instanciarlo*/ 
    public Radio()
    {
        estado = false;
        botones = new Boton[12];    //Se crea la lista que contendrá las emisoras almacenadas
    }
    
    /*Cambia el estado del radio a encendido
    */
    public void encender()
    {
        if(estado==false)
        {
            estado = true;
        }
        else
        {
            javax.swing.JOptionPane.showMessageDialog(null, "El radio se encuentra encendido");
        }
        
    }
    
    /*Cambia el estado del radio a apagado cuando se encuentra encendido*/
    public void apagar()
    {
        if(estado==true)
        {
            estado = false;
        }
        if(estado==false)
        {
            javax.swing.JOptionPane.showMessageDialog(null, "El radio se encuentra apagado");
        }
    }
    
    /*Cuando se ingresa una emisora, este método revisa que la emisora ingresada 
     * se encuentre entre los rangos establecidos para frecuencias am y fm */
    public void seleccionarEstacion(double est)
    {
        //Para am
        if(est >= 530 && est <= 1610)
        {
            if(est%10==0)
            {
                estaciones = est;
            }
        }
        //Para fm
        else if (est >= 87.9 && est <= 107.9)
        {
            double est1;
            est1=((est+0.1)*10)%2;
               //
            if(est==0)
            {
                estaciones = est;
            }
        }
    }

    /*Verifica que se elija de un arreglo de botones un botón existente
     es decir, que escoja uno de los 12 botones*/
      public void LeerEstacion(int cont)
      {
        if(cont >= 0 && cont <= 12){
            botones[cont].set(frecuencia, estaciones);
        }
        else
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Número de botón inválido");
        }
    }
    
    /*Guarda la frecuencia y la estación de una emisora en la lista de objetos de 
     * clase botón*/
    public void modificarEstacion(String frec, double est)
    {
        
        /*Se verifica que la radio se encuentre encendida para poder sintonizar
        una estación*/
        if(estado==true)
        {
            /*Si hay una emisora almacenada en el botón seleccionado se podrá
              sintonizar*/
            if(frec.equals("AM") || frec.equals("FM") )
            {
                  if((est >= 87.9 && est <= 107.9 && (((est+0.1)*10)%2)==0) || (est>=530 && est<=1610 &&(est%10==0)))
                  {
                       frecuencia=frec;
                       estaciones=est;    
                  }
                  else
                  {
                      javax.swing.JOptionPane.showMessageDialog(null, "Estación inválida");
                  }
                        
            }
            else
            {
                //javax.swing.JOptionPane.showMessageDialog(null, "Frecuencia inválida");
            }
        }
        else
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Encienda primero la radio");
        }
        
    }
    
    public void agregarEstacion(int cont, String frec, double est)
    {
        if(estado==true)
        {
            /*Si hay una emisora almacenada en el botón seleccionado se podrá
              sintonizar*/
            if(frec.equals("AM") || frec.equals("FM") )
            {
                  if((est >= 87.9 && est <= 107.9 && (((est+0.1)*10)%2)==0) || (est>=530 && est<=1610 &&(est%10==0)))
                  {
                       botones[cont].set(frec, est);    
                  }
                  else
                  {
                      javax.swing.JOptionPane.showMessageDialog(null, "Estación inválida");
                  }
            }
            else
            {
                javax.swing.JOptionPane.showMessageDialog(null, "Frecuencia inválida");
            }
        }
        else
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Encienda primero la radio");
        }
    }
    
  public void setEstado(boolean estado) {
        this.estado = estado;
    }

    public void setBotones(Boton[] botones) {
        this.botones = botones;
    }

    public void setEstaciones(double estaciones) {
        this.estaciones = estaciones;
    }

    public void setFrecuencia(String frecuencia) {
        this.frecuencia = frecuencia;
    }

    public boolean getEstado() {
        return estado;
    }

    public Boton[] getBotones() {
        return botones;
    }

    public double getEstaciones() {
        return estaciones;
    }

    public String getFrecuencia() {
        return frecuencia;
    }
    
      
    
    
}

